package com.mhc.suzuki.service;

import com.mhc.haval.security.model.User;
import com.mhc.suzuki.bo.PaymentDetailBO;
import com.mhc.suzuki.bo.PaymentNotificationQueryBO;
import com.mhc.suzuki.bo.SubmitTaskBO;
import com.mhc.suzuki.exception.SuzukiCommonException;

import java.util.List;

/**
 * Created by HW
 * on 2017/8/29 15:38.
 * 打款通知对应service
 */
public interface PaymentNotificationService {

    /**
     * 条件查询打款通知列表
     * @param paymentNotificationQueryBO 查询条件
     * @return
     * @throws SuzukiCommonException
     */
    List<PaymentNotificationQueryBO> queryPaymentNotificationQueryBOSByQuery(PaymentNotificationQueryBO paymentNotificationQueryBO) throws SuzukiCommonException;

    /**
     * 条件查询打款通知列表总条数
     * @param paymentNotificationQueryBO
     * @return
     * @throws SuzukiCommonException
     */
    Integer queryTotalCount(PaymentNotificationQueryBO paymentNotificationQueryBO) throws SuzukiCommonException;

    /**
     * 财务打款通知详情获取
     * @param orderNo
     * @return
     * @throws SuzukiCommonException
     */
    PaymentDetailBO queryPaymentDetailByOrderNo(String orderNo) throws SuzukiCommonException;

    /**
     * 财务更改打款状态为财务已打款
     * @param paymentDetailBO
     * @param submitTaskBO
     * @param logedUser
     * @return
     * @throws SuzukiCommonException
     */
    Boolean remittance(PaymentDetailBO paymentDetailBO,SubmitTaskBO submitTaskBO,User logedUser) throws SuzukiCommonException;

    /**
     * 判断当前状态是否处于垫款前或垫款后
     * @param orderNo
     * @return
     * @throws SuzukiCommonException
     */
    Boolean isOrderStatuByPayment(String orderNo) throws SuzukiCommonException;
}
